/*
 * MRTDGUI.java
 *
 * Created on 10. August 2007, 18:26
 *
 *  This file is part of JSmex.
 *
 *  JSmex is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  JSmex is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with Foobar; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

package jsmex.gui;

import java.awt.Image;
import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import jsmex.JSmexStatics;
import jsmex.function.DG14DataContainer;
import jsmex.function.DG2DataContainer;
import jsmex.function.EFCOMDataContainer;
import jsmex.function.EFSODDataContainer;
import jsmex.function.MRTDFunctions;
import jsmex.function.DG1DataContainer;
import opencard.core.util.HexString;

/**
 *
 * @author  Tobias Senger
 */
public class MRTDGUI extends javax.swing.JFrame {
    
    private MRTDFunctions mrtdFunc;
    
    /** Creates new form MRTDGUI */
    public MRTDGUI(MRTDFunctions mrtdFunc) {
        this.mrtdFunc = mrtdFunc;
        setLocation(100, 100);
        initComponents();
        setTitle(JSmexStatics.jsTitle+" MRTD Tool");
                
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Erzeugter Quelltext ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabelPicture = new javax.swing.JLabel();
        jPanel3 = new javax.swing.JPanel();
        jLabelName = new javax.swing.JLabel();
        jTextFieldName = new javax.swing.JTextField();
        jLabelSurname = new javax.swing.JLabel();
        jTextFieldSurname = new javax.swing.JTextField();
        jLabelDateOfBirth = new javax.swing.JLabel();
        jTextFieldDateOfBirth = new javax.swing.JTextField();
        jLabelNationality = new javax.swing.JLabel();
        jTextFieldNationality = new javax.swing.JTextField();
        jLabelSex = new javax.swing.JLabel();
        jTextFieldSex = new javax.swing.JTextField();
        jTextFieldValidUntil = new javax.swing.JTextField();
        jLabelValidUntil = new javax.swing.JLabel();
        jLabelDocumentNumber = new javax.swing.JLabel();
        jTextFieldDocumentNumber = new javax.swing.JTextField();
        jLabelDocumentType = new javax.swing.JLabel();
        jTextFieldDocumentType = new javax.swing.JTextField();
        jLabelIssuer = new javax.swing.JLabel();
        jTextFieldIssuer = new javax.swing.JTextField();
        jLabelOptionalData = new javax.swing.JLabel();
        jTextFieldOptionalData = new javax.swing.JTextField();
        jPanel4 = new javax.swing.JPanel();
        jCheckBoxEFCOM = new javax.swing.JCheckBox();
        jCheckBoxDG1 = new javax.swing.JCheckBox();
        jCheckBoxDG2 = new javax.swing.JCheckBox();
        jCheckBoxDG3 = new javax.swing.JCheckBox();
        jCheckBoxDG4 = new javax.swing.JCheckBox();
        jCheckBoxDG5 = new javax.swing.JCheckBox();
        jCheckBoxDG6 = new javax.swing.JCheckBox();
        jCheckBoxDG7 = new javax.swing.JCheckBox();
        jCheckBoxDG8 = new javax.swing.JCheckBox();
        jCheckBoxDG9 = new javax.swing.JCheckBox();
        jCheckBoxDG10 = new javax.swing.JCheckBox();
        jCheckBoxDG11 = new javax.swing.JCheckBox();
        jCheckBoxDG12 = new javax.swing.JCheckBox();
        jCheckBoxDG13 = new javax.swing.JCheckBox();
        jCheckBoxDG14 = new javax.swing.JCheckBox();
        jCheckBoxDG15 = new javax.swing.JCheckBox();
        jCheckBoxDG16 = new javax.swing.JCheckBox();
        jCheckBoxEFSOD = new javax.swing.JCheckBox();
        jPanel8 = new javax.swing.JPanel();
        jTextFieldMRZ1 = new javax.swing.JTextField();
        jTextFieldMRZ2 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jComboBox1 = new javax.swing.JComboBox(getComboBoxItems());
        jPanel5 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jPanel6 = new javax.swing.JPanel();
        jButtonReadMRTD = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jPanel7 = new javax.swing.JPanel();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Picture"));
        jLabelPicture.setMaximumSize(new java.awt.Dimension(188, 250));
        jLabelPicture.setPreferredSize(new java.awt.Dimension(188, 250));

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabelPicture, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabelPicture, javax.swing.GroupLayout.PREFERRED_SIZE, 250, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Personal Data"));
        jLabelName.setText("Name");

        jTextFieldName.setPreferredSize(new java.awt.Dimension(60, 20));

        jLabelSurname.setText("Surname");

        jTextFieldSurname.setPreferredSize(new java.awt.Dimension(60, 20));

        jLabelDateOfBirth.setText("Date of Birth (dd.mm.yyyy)");

        jLabelNationality.setText("Nationality");

        jLabelSex.setText("Sex");

        jLabelValidUntil.setText("Valid until (dd.mm.yyyy)");

        jLabelDocumentNumber.setText("Document Number");

        jLabelDocumentType.setText("Document Type");

        jLabelIssuer.setText("Issuer");

        jLabelOptionalData.setText("Optional Data");

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jTextFieldIssuer, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jLabelIssuer, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jTextFieldDocumentNumber, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jLabelDocumentNumber, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jTextFieldSex, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jLabelSex, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jTextFieldDateOfBirth, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jLabelDateOfBirth, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jLabelName, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE)
                    .addComponent(jTextFieldName, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 241, Short.MAX_VALUE))
                .addGap(16, 16, 16)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextFieldValidUntil, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jLabelSurname, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jLabelNationality, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jTextFieldNationality, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jLabelValidUntil)
                    .addComponent(jLabelDocumentType, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jTextFieldDocumentType, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jLabelOptionalData, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jTextFieldOptionalData, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                    .addComponent(jTextFieldSurname, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelName)
                    .addComponent(jLabelSurname, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldSurname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelDateOfBirth, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelNationality))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldDateOfBirth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldNationality, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelSex, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelValidUntil))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldSex, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldValidUntil, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelDocumentNumber)
                    .addComponent(jLabelDocumentType))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldDocumentNumber, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldDocumentType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelIssuer)
                    .addComponent(jLabelOptionalData))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldIssuer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldOptionalData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(59, Short.MAX_VALUE))
        );

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Data Groups"));
        jCheckBoxEFCOM.setText("EF.COM");
        jCheckBoxEFCOM.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxEFCOM.setEnabled(false);
        jCheckBoxEFCOM.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG1.setText("DG1");
        jCheckBoxDG1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG1.setEnabled(false);
        jCheckBoxDG1.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG2.setText("DG2");
        jCheckBoxDG2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG2.setEnabled(false);
        jCheckBoxDG2.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG3.setText("DG3");
        jCheckBoxDG3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG3.setEnabled(false);
        jCheckBoxDG3.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG4.setText("DG4");
        jCheckBoxDG4.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG4.setEnabled(false);
        jCheckBoxDG4.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG5.setText("DG5");
        jCheckBoxDG5.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG5.setEnabled(false);
        jCheckBoxDG5.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG6.setText("DG6");
        jCheckBoxDG6.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG6.setEnabled(false);
        jCheckBoxDG6.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG7.setText("DG7");
        jCheckBoxDG7.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG7.setEnabled(false);
        jCheckBoxDG7.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG8.setText("DG8");
        jCheckBoxDG8.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG8.setEnabled(false);
        jCheckBoxDG8.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG9.setText("DG9");
        jCheckBoxDG9.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG9.setEnabled(false);
        jCheckBoxDG9.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG10.setText("DG10");
        jCheckBoxDG10.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG10.setEnabled(false);
        jCheckBoxDG10.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG11.setText("DG11");
        jCheckBoxDG11.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG11.setEnabled(false);
        jCheckBoxDG11.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG12.setText("DG12");
        jCheckBoxDG12.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG12.setEnabled(false);
        jCheckBoxDG12.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG13.setText("DG13");
        jCheckBoxDG13.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG13.setEnabled(false);
        jCheckBoxDG13.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG14.setText("DG14");
        jCheckBoxDG14.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG14.setEnabled(false);
        jCheckBoxDG14.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG15.setText("DG15");
        jCheckBoxDG15.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG15.setEnabled(false);
        jCheckBoxDG15.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxDG16.setText("DG16");
        jCheckBoxDG16.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDG16.setEnabled(false);
        jCheckBoxDG16.setMargin(new java.awt.Insets(0, 0, 0, 0));

        jCheckBoxEFSOD.setText("EF.SOD");
        jCheckBoxEFSOD.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxEFSOD.setEnabled(false);
        jCheckBoxEFSOD.setMargin(new java.awt.Insets(0, 0, 0, 0));

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jCheckBoxEFCOM)
                    .addComponent(jCheckBoxDG1)
                    .addComponent(jCheckBoxDG2)
                    .addComponent(jCheckBoxDG3)
                    .addComponent(jCheckBoxDG4)
                    .addComponent(jCheckBoxDG5)
                    .addComponent(jCheckBoxDG6)
                    .addComponent(jCheckBoxDG7)
                    .addComponent(jCheckBoxDG8)
                    .addComponent(jCheckBoxDG9)
                    .addComponent(jCheckBoxDG10)
                    .addComponent(jCheckBoxDG11)
                    .addComponent(jCheckBoxDG12)
                    .addComponent(jCheckBoxDG13)
                    .addComponent(jCheckBoxDG14)
                    .addComponent(jCheckBoxDG15)
                    .addComponent(jCheckBoxDG16)
                    .addComponent(jCheckBoxEFSOD))
                .addContainerGap(153, Short.MAX_VALUE))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jCheckBoxEFCOM)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG6)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG7)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG8)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG9)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG10)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG11)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG12)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG13)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG14)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG15)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxDG16)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBoxEFSOD)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTextFieldMRZ1.setFont(new java.awt.Font("Lucida Sans Typewriter", 1, 12));

        jTextFieldMRZ2.setFont(new java.awt.Font("Lucida Sans Typewriter", 1, 12));

        jLabel1.setText("MRZ Info");

        jComboBox1.setFont(new java.awt.Font("Lucida Sans Typewriter", 1, 12));
        jComboBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox1ActionPerformed(evt);
            }
        });

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("MRTD"));
        jButtonReadMRTD.setText("Read MRTD");
        jButtonReadMRTD.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonReadMRTDActionPerformed(evt);
            }
        });

        jButton2.setText("Save to File");
        jButton2.setEnabled(false);
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButtonReadMRTD, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
                .addComponent(jButtonReadMRTD)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton2)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("Log"));
        jButton3.setText("Clear");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jButton4.setText("Save to file");

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jButton3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addComponent(jButton3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton4)
                .addContainerGap(27, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 324, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 287, Short.MAX_VALUE)
                    .addGroup(jPanel5Layout.createSequentialGroup()
                        .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 88, Short.MAX_VALUE)
                        .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 345, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jTextFieldMRZ1, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jTextFieldMRZ2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 324, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jLabel1))
                .addContainerGap(160, Short.MAX_VALUE))
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(24, 24, 24))
        );
        jPanel8Layout.setVerticalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldMRZ1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldMRZ2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 239, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, 320, Short.MAX_VALUE)
                    .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(325, 325, 325))
        );

        jMenu1.setText("Menu");
        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 775, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
        String selection = (String)jComboBox1.getSelectedItem();
        if (selection.equals("--clear--")) {
            jTextFieldMRZ1.setText("");
            jTextFieldMRZ2.setText("");
            return;
        }
        
        Vector vec = mrtdFunc.getMRZList();
        for (int i=0;i<vec.size();i++) {
            String[] strArray = (String[]) vec.get(i);
            if (strArray[0].equals(selection)) {
                jTextFieldMRZ1.setText(strArray[0]);
                jTextFieldMRZ2.setText(strArray[1]);
            }
        }
    }//GEN-LAST:event_jComboBox1ActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        jComboBox1.addItem(jTextFieldMRZ1.getText());
        mrtdFunc.saveMRZList(jTextFieldMRZ1.getText(),jTextFieldMRZ2.getText());
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        mrtdFunc.dataToFile(jTextFieldSurname.getText()); //String is the prefix for the filename
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jButtonReadMRTDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonReadMRTDActionPerformed
        long starttime = System.currentTimeMillis();       
        try {
            DG1DataContainer dg1 = mrtdFunc.getDG1(jTextFieldMRZ2.getText());
            setPersonalData(dg1);
            
            DG2DataContainer dg2 = mrtdFunc.getDG2(jTextFieldMRZ2.getText());
            jLabelPicture.setIcon(new ImageIcon(dg2.getImage().getScaledInstance(188,250,Image.SCALE_SMOOTH)));
            
            EFCOMDataContainer efcom = mrtdFunc.getEFCOM(jTextFieldMRZ2.getText());
            jTextArea1.append("LDS-Version: "+efcom.getLDSVersion()+"\n");
            jTextArea1.append("Unicode-Version: "+efcom.getUnicodeVersion()+"\n");
            setDataGroups(efcom.getTagList());
            
            DG14DataContainer dg14 = mrtdFunc.getDG14(jTextFieldMRZ2.getText());
            EFSODDataContainer efsod = mrtdFunc.getEFSOD(jTextFieldMRZ2.getText());
                        
            jButton2.setEnabled(true);
            addComboBoxItem(jTextFieldMRZ1.getText());
            
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage());
            ex.printStackTrace();
        }
        long endtime = System.currentTimeMillis();
        System.out.println("time ellapsed: "+(endtime-starttime)/1000.0+" s");
        
    }//GEN-LAST:event_jButtonReadMRTDActionPerformed
    
    private void addComboBoxItem(String item) {
        if (jComboBox1.getItemCount()==0) {
            jComboBox1.addItem(item);
            mrtdFunc.saveMRZList(jTextFieldMRZ1.getText(),jTextFieldMRZ2.getText());
        }
        else {
            for (int i=0;i<jComboBox1.getItemCount();i++) {
                if (item.equals(jComboBox1.getItemAt(i)))  return;
            }
            jComboBox1.addItem(item);
            mrtdFunc.saveMRZList(jTextFieldMRZ1.getText(),jTextFieldMRZ2.getText());
        }
    }
    
    private void setDataGroups(byte[] tagList) {
        for (int i=0;i<tagList.length;i++) {
            switch (tagList[i]) {
                case (byte)0x60: jCheckBoxEFCOM.setSelected(true); break;
                case (byte)0x61: jCheckBoxDG1.setSelected(true); break;
                case (byte)0x75: jCheckBoxDG2.setSelected(true); break;
                case (byte)0x63: jCheckBoxDG3.setSelected(true); break;
                case (byte)0x76: jCheckBoxDG4.setSelected(true); break;
                case (byte)0x65: jCheckBoxDG5.setSelected(true); break;
                case (byte)0x66: jCheckBoxDG6.setSelected(true); break;
                case (byte)0x67: jCheckBoxDG7.setSelected(true); break;
                case (byte)0x68: jCheckBoxDG8.setSelected(true); break;
                case (byte)0x69: jCheckBoxDG9.setSelected(true); break;
                case (byte)0x6A: jCheckBoxDG10.setSelected(true); break;
                case (byte)0x6B: jCheckBoxDG11.setSelected(true); break;
                case (byte)0x6C: jCheckBoxDG12.setSelected(true); break;
                case (byte)0x6D: jCheckBoxDG13.setSelected(true); break;
                case (byte)0x6E: jCheckBoxDG14.setSelected(true); break;
                case (byte)0x6F: jCheckBoxDG15.setSelected(true); break;
                case (byte)0x70: jCheckBoxDG16.setSelected(true); break;
//                case (byte)0x71: jCheckBoxEFSOD.setSelected(true); break;
                
            }
        }
        jCheckBoxEFSOD.setSelected(true);
    }
    
    private void setPersonalData(DG1DataContainer dg1) {
        jTextFieldName.setText(dg1.getName());
        jTextFieldSurname.setText(dg1.getSurname());
        jTextFieldDateOfBirth.setText(dg1.getDateOfBirth());
        jTextFieldNationality.setText(dg1.getNationality());
        jTextFieldSex.setText(dg1.getSex());
        jTextFieldValidUntil.setText(dg1.getDateOfExpiry());
        jTextFieldDocumentNumber.setText(dg1.getDocNumber());
        jTextFieldDocumentType.setText(dg1.getDocType());
        jTextFieldIssuer.setText(dg1.getIssuer());
        jTextFieldOptionalData.setText(dg1.getOptData());
    }
    
    private String[] getComboBoxItems() {
        Vector vec = mrtdFunc.getMRZList();
        if (vec==null) return new String[2];
        String[] list = new String[vec.size()+1];
        list[0] = "--clear--";
        for (int i=1;i<vec.size()+1;i++) {
            list[i] = ((String[])(vec.get(i-1)))[0];
        }
        return list;
    }
    
    // Variablendeklaration - nicht modifizieren//GEN-BEGIN:variables
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButtonReadMRTD;
    private javax.swing.JCheckBox jCheckBoxDG1;
    private javax.swing.JCheckBox jCheckBoxDG10;
    private javax.swing.JCheckBox jCheckBoxDG11;
    private javax.swing.JCheckBox jCheckBoxDG12;
    private javax.swing.JCheckBox jCheckBoxDG13;
    private javax.swing.JCheckBox jCheckBoxDG14;
    private javax.swing.JCheckBox jCheckBoxDG15;
    private javax.swing.JCheckBox jCheckBoxDG16;
    private javax.swing.JCheckBox jCheckBoxDG2;
    private javax.swing.JCheckBox jCheckBoxDG3;
    private javax.swing.JCheckBox jCheckBoxDG4;
    private javax.swing.JCheckBox jCheckBoxDG5;
    private javax.swing.JCheckBox jCheckBoxDG6;
    private javax.swing.JCheckBox jCheckBoxDG7;
    private javax.swing.JCheckBox jCheckBoxDG8;
    private javax.swing.JCheckBox jCheckBoxDG9;
    private javax.swing.JCheckBox jCheckBoxEFCOM;
    private javax.swing.JCheckBox jCheckBoxEFSOD;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabelDateOfBirth;
    private javax.swing.JLabel jLabelDocumentNumber;
    private javax.swing.JLabel jLabelDocumentType;
    private javax.swing.JLabel jLabelIssuer;
    private javax.swing.JLabel jLabelName;
    private javax.swing.JLabel jLabelNationality;
    private javax.swing.JLabel jLabelOptionalData;
    private javax.swing.JLabel jLabelPicture;
    private javax.swing.JLabel jLabelSex;
    private javax.swing.JLabel jLabelSurname;
    private javax.swing.JLabel jLabelValidUntil;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextFieldDateOfBirth;
    private javax.swing.JTextField jTextFieldDocumentNumber;
    private javax.swing.JTextField jTextFieldDocumentType;
    private javax.swing.JTextField jTextFieldIssuer;
    private javax.swing.JTextField jTextFieldMRZ1;
    private javax.swing.JTextField jTextFieldMRZ2;
    private javax.swing.JTextField jTextFieldName;
    private javax.swing.JTextField jTextFieldNationality;
    private javax.swing.JTextField jTextFieldOptionalData;
    private javax.swing.JTextField jTextFieldSex;
    private javax.swing.JTextField jTextFieldSurname;
    private javax.swing.JTextField jTextFieldValidUntil;
    // Ende der Variablendeklaration//GEN-END:variables
    
}
